package api

import (
	"blizzard/app/model"
	"blizzard/app/service"
	"blizzard/app/utils/code"
	"blizzard/app/utils/response"
	"github.com/gogf/gf/net/ghttp"
)

var App = new(apiApp)

type apiApp struct {}

func (a *apiApp) Add(r *ghttp.Request) {
	var (
		data *model.AppParam
		err error
	)
	if err = r.Parse(&data); err != nil {
		response.JsonExit(r, code.ParamError, err.Error())
	}
	if err = service.App.Add(r, data); err != nil {
		response.JsonExit(r, code.ServerError, err.Error())
	}
	response.Json(r, code.Success, code.SuccessMsg, data)
}

func (a *apiApp) Change(r *ghttp.Request) {
	var (
		data *model.AppParam
		err error
		id int
	)
	if err = r.Parse(&data); err != nil {
		response.JsonExit(r, code.ParamError, err.Error())
	}
	id = r.GetInt("app_id")
	if err = service.App.Change(id, data); err != nil {
		response.JsonExit(r, code.ServerError, err.Error())
	}
	response.Json(r, code.Success, code.SuccessMsg)
}

func (a *apiApp) GetInfo(r *ghttp.Request) {
	var (
		data *model.AppInfoParam
		err error
		info interface{}
		id int
	)
	if err = r.Parse(&data); err != nil {
		response.JsonExit(r, code.ParamError, err.Error())
	}
	id = r.GetInt("app_id")
	info, err = service.App.GetInfo(id, data)
	if err != nil {
		response.JsonExit(r, code.ServerError, err.Error())
	}
	response.Json(r, code.Success, code.SuccessMsg, info)
}

func (a *apiApp) GetInfoAll(r *ghttp.Request) {
	var (
		data *model.AppInfoParam
		err error
		info interface{}
		id int
	)
	if err = r.Parse(&data); err != nil {
		response.JsonExit(r, code.ParamError, err.Error())
	}
	id = r.GetInt("app_id")
	info, err = service.App.GetInfoAll(id, data)
	if err != nil {
		response.JsonExit(r, code.ServerError, err.Error())
	}
	response.Json(r, code.Success, code.SuccessMsg, info)
}

func (a *apiApp) AddBlack(r *ghttp.Request) {
	var (
		data *model.AddBlackParam
		err error
		id int
	)
	if err = r.Parse(&data); err != nil {
		response.JsonExit(r, code.ParamError, err.Error())
	}
	id = r.GetInt("app_id")
	err = service.App.AddBlack(r, id, data)
	if err != nil {
		response.JsonExit(r, code.ServerError, err.Error())
	}
	response.Json(r, code.Success, code.SuccessMsg)
}

func (a *apiApp) ListAll(r *ghttp.Request) {
	var (
		err error
		data []*model.BxSoftware
	)
	data, err = service.App.ListAll()
	if err != nil {
		response.JsonExit(r, code.ServerError, err.Error())
	}
	response.Json(r, code.Success, code.SuccessMsg, data)
}